﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HHMMS.FileServer
{
    /// <summary>
    /// 提供创建文件服务器提供程序实例的方法。
    /// </summary>
    public class FileServerManager
    {
        /// <summary>
        /// 创建指定名称的文件服务器提供程序实例并返回。
        /// </summary>
        /// <param name="providerName">文件服务器提供程序名称</param>
        /// <returns></returns>
        public static IFileServerProvider Create(string providerName)
        {
            string typeName = XmlNodeHelper.GetStringValue(
                FileServerSection.Current.ConfigSection, "@type", string.Empty);

            if (string.IsNullOrEmpty(typeName))
            {
                throw new Exception("找不到名称为" + providerName + "的文件服务提供程序配置节");
            }

            return Type.GetType(typeName, true, true).GetConstructor(new Type[0]).Invoke(new object[0]) as IFileServerProvider;
        }

        /// <summary>
        /// 创建默认的文件服务器提供程序实例并返回。
        /// </summary>
        /// <returns></returns>
        public static IFileServerProvider Create()
        {
            return Type.GetType(FileServerSection.Current.DefaultProviderTypeName, true, true).GetConstructor(new Type[0]).Invoke(new object[0]) as IFileServerProvider;
        }
    }
}
